Related tdf#124263 Make sure sidebar is wide enough for content
If panel's requested minimal size is smaller than current sidebar width,
enlarge the sidebar to fit the content.
Change-Id: I9baa4ef6c01d5563951d4df0d939883fce02e87b
Reviewed-on: https://gerrit.libreoffice.org/69561
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index e4bd01b..f2fa554 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -1216,9 +1216,16 @@
{
const sal_uInt16 nId (pSplitWindow->GetItemId(mpParentWindow.get()));
const sal_uInt16 nSetId (pSplitWindow->GetSet(nId));
const sal_Int32 nRequestedWidth
= (TabBar::GetDefaultWidth() + nWidth) * mpTabBar->GetDPIScaleFactor();
// Make sure the sidebar is wide enough to fit the requested content
if (pSplitWindow->GetSizePixel().Width() < nRequestedWidth)
SetChildWindowWidth(nRequestedWidth);
pSplitWindow->SetItemSizeRange(
nSetId,
Range(TabBar::GetDefaultWidth() * mpTabBar->GetDPIScaleFactor() + nWidth,
Range(nRequestedWidth,
getMaximumWidth() * mpTabBar->GetDPIScaleFactor()));
}
}
diff --git a/test/source/sheet/xviewsplitable.cxx b/test/source/sheet/xviewsplitable.cxx
index 7dd18ae..d88122f5 100644
--- a/test/source/sheet/xviewsplitable.cxx
+++ b/test/source/sheet/xviewsplitable.cxx
@@ -23,12 +23,12 @@
uno::Reference< sheet::XViewSplitable > xViewSplitable(init(), UNO_QUERY_THROW);
CPPUNIT_ASSERT_MESSAGE("View is already split", !xViewSplitable->getIsWindowSplit());
xViewSplitable->splitAtPosition(101, 51);
xViewSplitable->splitAtPosition(90, 51);
CPPUNIT_ASSERT_MESSAGE("View wasn't split", xViewSplitable->getIsWindowSplit());
CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong horizontal pixel position",
sal_Int32(101), xViewSplitable->getSplitHorizontal());
sal_Int32(90), xViewSplitable->getSplitHorizontal());
CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical pixel position",
sal_Int32(51), xViewSplitable->getSplitVertical());